/*____________________________________________________________________________
	Copyright (C) 2000 Networks Associates Technology, Inc.
	All rights reserved.
	
	PGPsdkDrv_Readme.txt - PGP SDK driver readme file
	
	$Id: PGPsdkDriver_Readme.txt,v 1.1 2000/07/21 12:53:01 pbj Exp $
____________________________________________________________________________*/

Instructions for the PGPsdk utility driver for Windows 9x, NT, and 2000 


Introduction :
--------------

The PGPsdk driver is a multipurpose driver which handles a variety of tasks
for the PGP SDK and PGP client code.  The major functions performed by 
PGPutil are :

1) Secure memory locking.  The PGPsdk driver replaces the PGPmemlock driver.
   All functions formerly performed by PGPmemlock are now performed by the
   PGPsdk driver.  This driver can lock memory to prevent the operating 
   system from swapping it to disk.  This is especially useful for memory 
   buffers containing passphrases and other sensitive information.
   
2) Entropy collection.  The PGPsdk driver hooks the mouse and keyboard 
   drivers to derive entropy from the timing of mouse movements and 
   keystrokes.
   
3) Inactivity timing.  The PGPsdk driver can be used to determine if a given 
   time interval has elapsed without keyboard or mouse activity.  This is 
   used by PGPdisk for unmounting virtual disks on unattended computers.
   
4) File deletion hooking.  The PGPsdk driver hooks the file system to get 
   notifications when the file system is about to delete a file.  This is 
   used to implement wipe-on-delete functionality.
   
5) Data caching.  The PGPsdk driver can be used to cache data such as 
   passphrases and passkeys.

There are three distinct drivers: one for Windows 95/98 (PGPsdk.vxd), one 
for Windows NT (PGPsdk.sys), and one for Windows 2000 (PGPsdk.sys).


Calling the driver :
--------------------

See the file /libs2/pgpsdk/win32/pub/include/PGPsdkDriver.h for a description
of how to call the driver from your code.


Building the driver (Windows 9x) :
----------------------------------

You will need to have Visual C++ version 6.0 and the Windows 98 DDK installed.
Just open the PGPutil.dsw workspace, select the 9x driver, and build.


Building the driver (Windows NT) :
----------------------------------

You will need to have Visual C++ version 6.0 and the Windows NT DDK installed.
Open the PGPutil.dsw workspace, select the NT driver, select the WinNT 
configuration, and build.


Building the driver (Windows 2000) :
----------------------------------

You will need to have Visual C++ version 6.0 and the Windows 2000 DDK 
installed.  Open the PGPutil.dsw workspace, select the NT driver, select the
Win2K configuration, and build.


Installing the driver (Windows 95/98) :
------------------------------------

Unlike the PGPmemlock driver, the PGPsdk driver is a *static* VxD.  Thus, 
its  installation is slightly different:

- Copy the driver PGPsdk.vxd to the <windows>\system\ directory, e.g.:

  copy PGPsdk.vxd c:\windows\system\

- Update the registry with REGEDIT.  You should create a registry key called 

	 \HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\PGPsdk

     in this location, create the following registry entries with the 
     following types and values :

     entry			type		value
     StaticVxD		REG_SZ	 	PGPsdk.vxd

- Reboot the computer.  This will cause the driver to load automatically.  


Installing the driver (Windows NT) :
------------------------------------

- Copy the driver PGPsdk.sys (the Windows NT version) to the 
  %SystemRoot%\system32\drivers\ directory, e.g.:

  copy PGPsdk.sys c:\winnt\system32\drivers\

- Update the registry with REGEDIT.  You should create a registry key called 

	 \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PGPsdkDriver

     in this location, create the following registry entries with the 
     following types and values :

     entry			type		value
     ErrorControl	REG_DWORD 	0x00000001
     Type			REG_DWORD 	0x00000001
     Start			REG_DWORD	0x00000002
     DisplayName	REG_SZ		"PGPsdkDriver"


Installing the driver (Windows 2000) :
--------------------------------------

- Copy the driver PGPsdk.sys (the Windows 2000 version) to the 
  %SystemRoot%\system32\drivers\ directory, e.g.:

  copy PGPsdk.sys c:\winnt\system32\drivers\

- Update the registry with REGEDIT.  You should create a registry key called 

	 \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PGPsdkDriver

     in this location, create the following registry entries with the 
     following types and values :

     entry			type		value
     ErrorControl	REG_DWORD 	0x00000001
     Type			REG_DWORD 	0x00000001
     Start			REG_DWORD	0x00000002
     DisplayName	REG_SZ		"PGPsdkDriver"

- With REGEDT32 (*NOT* REGEDIT) Go to

  \HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Class\
  		{4D36E96B-E325-11CE-BFC1-08002BE10318}

  and find the REG_MULTI_SZ value called "UpperFilters". You need to add the 
  string "PGPsdkDriver" to the end of this list. You must use Regedt32.exe 
  to do this, not Regedit.exe; double-click on the value and you will be 
  presented with an editing dialog. Hit return to go to a new line, type in 
  "PGPsdkDriver", then hit OK.

  You also need to do the same thing for
  
  \HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Class\
  		{4D36E96F-E325-11CE-BFC1-08002BE10318}
  
  (Note that the only difference here is that one digit is different in the 
  key name.)
  
  Beware that as long as these entries exist, you must have PGPsdk.sys loaded
  or else your mouse/keyboard will not work.  If you find yourself in this
  predicament, boot into Safe Mode and copy PGPsdk.sys to the directory named
  above.

- Reboot the computer.  This will cause the driver to load automatically.  


Uninstalling :
--------------

Undo the steps above for installing the driver.  Reboot the computer.




